import axios from 'axios'
import { createBrowserHistory } from 'history';
import store from '../store'

let history = createBrowserHistory()

let service = axios.create({
    timeout: 10 * 1000,
    // baseURL: "http://gjzigt.natappfree.cc"//基准路径(请求地址的公共前缀)
    baseURL: process.env.REACT_APP_BASE_API
})

service.interceptors.request.use(
    (config) => {
        //请求发送前的逻辑处理：
        //一般用于修改请求头参数，给请求头设置参数，一般参数为token，然后后端就可以从请求头header中获取参数
        //设置请求头参数（携带请求头参数）
        config.headers['token'] = store.getState().token;
        // config.headers['token'] = localStorage.getItem('token')
        // config.headers['Authorization'] = 'Bearer' + ' ' + localStorage.getItem('token');

        // config.headers['Content-Type'] = 'application/json';

        // config.headers

        return config
    },
    (error) => {
        return Promise.reject(error)
    }
)

service.interceptors.response.use(
    (res) => {
        if (res.data.code == '10119') {
            localStorage.removeItem('token')
            // store.dispatch({ type: 'REMOVE_TOKEN' });
            // store.subscribe(() => { store.getState() })//redux取消监听

            history.push('/login')
            history.go(0)
        }
        return res
    },
    (error) => {
        if (error.response.status == 401) {
            alert('登陆过期，请重新登录')
            localStorage.removeItem('token')
            history.push('/login')
        } else if (error.response.status == 404) {
            alert('访问路径有误')
        } else if (error.response.status == 500) {
            alert('服务器内部错误')
        } else if (error.response.status == 503) {
            alert('服务器无法提供服务')
        }
        return Promise.reject(error)
    }
)

export default service